package main

import "fmt"

func main() {
	/**
	继承：go语言不是面向对象的，但是可以模拟出面向对象的三大特性（封装、继承、多态）
		1.提升字段：由于结构体匿名属性的特性，可以实现继承的效果
	*/
	student := Student{Person: Person{Name: "张三", Age: 23, PassWord: "123456"}, School: "清华大学", Class: "大学一班"}
	fmt.Println(student.Name)
	fmt.Println(student.Age)
	fmt.Println(student.PassWord)
	fmt.Println(student.School)
	fmt.Println(student.Class)
	student.Say("继承Person的方法")
	student.Study("自己Student的方法")
}

type Person struct {
	Name     string
	Age      int
	PassWord string
}

type Student struct {
	Person
	School string
	Class  string
}

func (p Person) Say(str string) {
	fmt.Println(str)
}

func (p Person) Study(book string) {
	fmt.Println(book)
}
